﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

namespace analyze_lab2
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Users\timofey\Desktop\Война и мир.txt";
            if (File.Exists(path))
            {
                var parser = new Parser(path);
                var file = new FileInfo(path);
                parser.Pars();
                int[] array = parser.array;
                List<Informer> info = array.Where(p => p != 0).Select(p => new Informer((double) p / file.Length, p)).ToList();
                var size = info.Sum(p => Math.Abs(Math.Round(-Math.Log(p.probability, 2)*p.count)));
                var entrop = info.Sum(p => (-p.probability * Math.Log(p.probability, 2)));
                var maxInter = Math.Log(256, 2);
                var R = maxInter - entrop;
                Console.WriteLine("Исходный размер файла {0} байт", new FileInfo(path).Length);
                Console.WriteLine("Количество информации {0} байт", (double)size/8);
                Console.WriteLine("Энтропия источника {0:#.####} бит", entrop);
                Console.WriteLine("Максимальная энтропия {0} бит", maxInter);
                Console.WriteLine("Избыточность источника {0:#.####} бит", R);
                Console.WriteLine("Относительная избыточность источника {0:#.####}%", R/maxInter * 100);
            }
            else
            {
                Console.WriteLine("Файл не найден.");                
            }
            Console.ReadLine();
        }
    }
}
